home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Environments / PowerMacOberon feb96 / Source / Fonts.Mod (.txt) < prev    next >
Oberon Text  |  1994-07-11  |  1KB  |  31 lines

  1. Syntax10.Scn.Fnt
  2. MODULE Fonts; (* mf 15.3.93 *)
  3. IMPORT
  4.     SYS:=SYSTEM, Macintosh, Display;
  5.     Name*= ARRAY 32 OF CHAR;
  6.     Font*= POINTER TO FontDesc;
  7.     FontDesc*= RECORD
  8.         name*: Name;
  9.         height*, minX*, maxX*, minY*, maxY*: INTEGER;
  10.         raster*: Display.Font;
  11.         next: Font
  12.     END;
  13.     Default*: Font;
  14.     defaultName: ARRAY 32 OF CHAR;
  15.     PROCEDURE This*(name: ARRAY OF CHAR): Font;
  16.         VAR fnt: Font; map: Macintosh.FontMapRealPtr; fntNum, fntSize, fntFace: INTEGER;
  17.     BEGIN fnt:=Default;
  18.         LOOP
  19.             IF fnt=NIL THEN EXIT ELSIF fnt.name=name THEN RETURN fnt ELSE fnt:=fnt.next END
  20.         END;
  21.         Macintosh.GetFontInfo(name, fntNum, fntSize, fntFace);
  22.         IF fntNum=0 THEN RETURN Default END;
  23.         map:=SYS.VAL (Macintosh.FontMapRealPtr, Macintosh.NewFontMap(fntNum, fntSize, fntFace));
  24.         NEW(fnt); COPY(name, fnt.name); fnt.raster:=SYS.VAL(Display.Font, map);
  25.         fnt.height:=map.height; fnt.maxX:=map.widMax; fnt.minY:=map.ndescent; fnt.maxY:=map.ascent;
  26.         IF Default # NIL THEN fnt.next:=Default.next; Default.next:=fnt END;
  27.         RETURN fnt
  28.     END This;
  29. BEGIN Macintosh.GetPar("Fonts.DefaultFontName", defaultName); Default:=This(defaultName)
  30. END Fonts.
  31.